
#ifndef SX_CANVAS_H
#define SX_CANVAS_H

#include <sxComponent.h>
#include <sxColor4.h>
#include <sxString.h>

/* Sx library types. */
using Sx::Graphics::Color4f;

namespace Sx {
namespace Interface {

class Canvas : public Component {
public:
	virtual bool initialize() = 0;
	virtual void render() const = 0;
	virtual void resize(int width, int height) = 0;

	/* Standard Drawing Functions */
	virtual bool drawCircle(float radius, int xCenter, int yCenter, const Color4f& color, unsigned int segmentCount = 60u) const = 0;
	virtual bool drawText(const String& text, int x, int y, const Color4f& color) const = 0;
	virtual bool draw3DText(const String& text, float x, float y, float z, const Color4f& color) const = 0;
	virtual bool drawBorder(int x, int y, int width, int height, unsigned int borderWidth, const Color4f& color) const = 0;
	virtual bool drawRectangle(int x, int y, int width, int height, const Color4f& color, bool drawFromCenter = false) const = 0;
	virtual bool fillRectangle(int x, int y, int width, int height, const Color4f& color, bool drawFromCenter = false) const = 0;
};

}

}

#endif
